package cn.hwm.proxy.dynamicproxy;

import cn.hwm.proxy.common.Person;
import cn.hwm.proxy.common.XiaoMing;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * 动态代理
 */
public class ProxyTest {


    public static void main(String[] args) {

        // 创建一个实例对象，这个对象是被代理的对象
        Person person = new XiaoMing();

        // 创建一个与代理对象相关联的invocationHandler
        InvocationHandler invocationHandler = new PersionInvocationHandler(person);

        // 创建一个代理对象personProxy来代理XiaoMing，代理对象的每个执行方法都会替换执行Invocation中的invoke方法
        Person personProxy = (Person) Proxy.newProxyInstance(ProxyTest.class.getClassLoader(), new Class<?>[] {Person.class}, invocationHandler);
        personProxy.cat();

    }
}
